Postgres läuft unter verschiedenen UNIX-Varianten,
z.B. Linux, HP-UX oder MacOS X. Wir empfehlen für den Einstieg Linux[3]. Vor der Installation
unter Linux sollte die Locale-Umgebungsvariable
$LANG auf de_DE@euro oder eine andere deutsche Locale
(meist in /usr/lib/locale) stehen ? die aktuelle Locale wird bei der
Installation von Postgres berücksichtigt und sorgt dafür, dass Datums- und
Währungsformate korrekt sind. |
Erzeugen Sie zunächst den User postgres mit dem Homeverzeichnis der Postgres-Installation (z.B. unter Linux mit useradd -g users -d /usr/local/pgsql postgres).
In der Postgres-7.2-Version ist es wichtig, den Datenbankserver für internationale Sprachumgebungen zu konfigurieren, deshalb bietet es sich an, die Installation nicht als Binary- sondern als Quell-Installation vorzunehmen[4]. Bei höheren Versionen von Postgres ist dies nicht mehr nötig.
In der Download-Version von Postgres wird Postgres standardmäßig nach /usr/local/pgsql installiert. Als DBSpace muss man ein oder mehrere Verzeichnisse anlegen und mit initdb vorbereiten. Die SuperX-Datenbank läßt sich dann in einem eigenen DBSpace ablegen.
Zunächst müssen Sie sich als root anmelden. Wir gehen im
folgenden davon aus, dass Die Quellen von Postgres im Verzeichnis
/usr/src/packages/SOURCES
liegen (das Archiv z.B. von postgresql-7.3.4.tar.gz muss hier entpackt werden).
Dann gehen Sie in das Verzeichnis postgresql-7.3.4, und führen folgende Befehle aus:
Postgres
7.3.-8.x |
./configure --enable-locale --enable-nls make make install mkdir /usr/local/pgsql/data chown postgres /usr/local/pgsql/data |
Wenn Sie Postgres 7.2.x installieren, müssen beim ./configure der Parameter --enable-multibyte=LATIN1 gesetzt werden, in Postgres 7.3 oder höher ist dies defaultmäßig bereits eingebaut sind.
Damit sind die Schritte, die als root
auszuführen sind, beendet. Wir wechseln nun zur Kennung postgres mit
su - postgres
Vor der Initalisierung des DBSPACE sollte die Sprachumgebung des Users postgres korrekt sein. Für die bash wird in den meisten Distributionen die Umgebung generell in der Datei .bashrc im Homeverzeichnis des Users postgres gesetzt; dort geben Sie den Pfad für das data-Verzeichnis an, und legen die Ausführprogramme von Postgres in den Datenpfad:
.bashrc |
... #Zur Sicherheit für Postgres auch einzeln: export LC_CTYPE='de_DE@euro' export LC_COLLATE='de_DE@euro' export LC_TIME='de_DE@euro' export LC_NUMERIC='de_DE@euro' export LC_MONETARY='de_DE@euro' export LC_MESSAGES='de_DE@euro'
PATH=$PATH:/usr/local/pgsql/bin export PGDATA=/usr/local/pgsql/data |
Wenn die Sprachumgebung stimmt, dann wird der DBSPACE vom User postgres initialisiert.
Initialisierung des DBSPACE |
/usr/local/pgsql/bin/initdb -D $PGDATA
|
Durch initdb wird der DBSpace erzeugt. Wenn die Umgebung stimmt, dann wird Postgres für die deutsche Locale vorbereitet (Sortierung von Zeichen, Datums- und Währungsformate etc).
Ausgabe von |
/usr/local/pgsql/bin/initdb -D $PGDATA |
Hinweis für SuSE-Anwender |
Wenn Sie Postgres als Binärpaket aus der Distribution
von SuSE 8.x - 10.x verwenden, müssen Sie beachten, dass der DBSPACE beim
ersten Start des Postmaster automatisch in /var/lib/pgsql/data
angelegt wird. Wenn dabei die Umgebungsvariablen nicht auf die deutsche Locale
gesetzt sind, wird ein amerikanischer Zeichensatz benutzt
(Default-Einstellung). Bevor Sie also das Init-Script z.B. im Runlevel-Editor
des YAST starten, sollten
Sie mit dem Sysconfig-Editor (im Yast: System->Editor
für Sysconfig-Dateien) die Variable POSTGRES_LANG
(im Yast: Suche nach "POSTGRES") auf die deutsche Locale de_DE@euro setzen. Außerdem sollten Sie dann
die Variable POSTGRES_OPTIONS=-i
|
Dann müssen Sie die ip-Nummer des Rechners mit dem SuperX-Webserver (sowie von allen anderen Clients, die direkt auf die Datenbank zugreifen sollen) in die Datei /usr/local/pgsql/data/pg_hba.conf eintragen. In der Datei $PGDATA/pg_hba.conf stehen die Verbindungsberechtigungen für der Server; hier müssen Sie mindestens dem User superx die Verbindungsrechte geben, z.B. mit folgender Zeile:
Auszug aus pg_hba. |
host
all all 127.0.0.1/32 trust |
Die obige Zeile gibt dem User superx Verbindungsrechte für alle Datenbanken auf dem lokalen Rechner 192.168.0.16.
Bitte beachten Sie, dass die Standardvorgabe nach der Installation von Postgres die ist, dass alle User auf dem aktuellen Rechner mit dem Datenbankserver verbinden dürfen. Dies sollten Sie natürlich ändern.
Weitere Parameter werden in der Konfigurationsdatei postgresql.conf definiert; wichtig ist die Einstellung, dass Postgres einen TCP-IP-Socket öffnet (Parameter tcpip_socket=true bei Postgres 7.x, listen_addresses=<<IP-Nr.>> bei Postgres 8.0 oder höher) sowie der TCP-IP-Port (port = 5432 ist die Standardvorgabe). Die Anzahl der gleichzeitig offnenen Verbindungen muss kleiner sein als die Anzahl, die Sie für das SuperX-Servlet definieren. Weitere Details zur Einrichtung von Postgres-Runtime-Parametern finden Sie im Admin-Handbuch der Postgres-Distribution. Außerdem sollen Sie beim Betriebssystem SuSE 9.1 oder höher den IPV6-Eintrag für "localhost" (::1) in /etc/hosts auskommentieren.
Danach wird der Datenbankserver gestartet mit dem Befehl
postmaster.
/usr/local/pgsql/bin/postmaster -i -D /usr/local/pgsql/data
Wir empfehlen, die Ausgabe von dem Prozeß in eine Logdatei zu schreiben, z.B. nach /var/log/postgresql.log. Legen Sie diese Datei als User root an, und machen Sie dann den User postgres zum Eigentümer. Ein Beispielscript ist folgendes (im Kernmodul zu finden unter $SUPERX_DIR/db/install):
pgsql_start.x |
#!/bin/sh |
Um zu testen, ob die Locale richtig ist, gehen Sie als User postgres in die Shell:
Prüfen der Locale |
Öffnen Sie mit Bei richtiger Locale lautet die Ausgabe: ?column?
|
Im Verzeichnis $SUPERX_DIR/db/install befindet sich ein Shellscript check_sortierung_pg.x, das prüft, ob die aktuell in der Umgebung festgelegten Variablen zu korrekter Darstellung von Umlauten und Sortierung unter Postgres der gewünschte Ergebnis bringen. Das Script legt einen temporären DBSPACE an, führt darin einen Testselect aus und löscht den DBSPACE wieder, in der Logdatei check_sortierung.log steht dann das Ergebnis. In dem Script muss die Variable PG_HOME korrekt gesetzt sein, der Rest wird automatisch geprüft.
Dann erzeugen Sie den User superx
für Postgres:
createuser superx
Dieser User muss Datenbanken erzeugen dürfen, braucht aber, wenn Sie als SuperUser bereits die Prozedursprache plpgsql in template1 installiert haben, kein Super-User sein bzw. bei Postgres 7.4 das Recht haben, andere User erzeugen zu dürfen [5]. Aus Sicherheitsgründen empfehlen wir, den User superx, der standardmäßig auch der User ist, mit der die Webapplikation auf die Datenbank zugreift, nicht zum Super-User zu machen.
SuperX benötigt die Prozedursprache plpgsql. Wenn Sie als SuperUser die Prozedursprache installieren wollen, geben Sie in der Shell ein:
createlang plpgsql
Damit ist Postgres installiert und für die SuperX-Installation konfiguriert. Bei dieser Gelegenheit sollten Sie den Datenbankserver gleich als Dienst beim Systemstart einrichten.
![]() |
![]() ![]() |
Seite 27 / 277 Letzter Update: 18.08.2008 Impressum |